﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace V82.ОбщиеМодули
{
	public partial class ПодключаемоеОборудованиеИНПАСЭквайринговыеТерминалыSmart
	{
		///////////////////////////////////////////////////////////////////////////////
		// ПРОГРАММНЫЙ ИНТЕРФЕЙС
		// Функция осуществляет подключение устройства.
		//
		// Параметры:
		//  ОбъектДрайвера   - <*>
		//           - ОбъектДрайвера драйвера торгового оборудования.
		//
		// Возвращаемое значение:
		//  <Булево> - Результат работы функции.
		//

		public object ПодключитьУстройство(/*ОбъектДрайвера, Параметры, ПараметрыПодключения, ВыходныеПараметры*/)
		{
			//ВыходныеПараметры = Новый Массив();
			//ИДТерминала = Неопределено;
			//Порт        = Неопределено;
			//Скорость    = Неопределено;
			//БитыДанных  = Неопределено;
			//Четность    = Неопределено;
			//СтопБиты    = Неопределено;
			//УправлениеПотоком    = Неопределено;
			//ШиринаСлипЧека       = Неопределено;
			//КоличествоКопий      = Неопределено;
			//ТекстШапки = Неопределено;
			//ТекстПодвала = Неопределено;
			//ДанныеМакетаСлипЧека = Неопределено;
			//Параметры.Свойство("ИДТерминала", ИДТерминала);
			//Параметры.Свойство("Порт", Порт);
			//Параметры.Свойство("Скорость", Скорость);
			//Параметры.Свойство("БитыДанных", БитыДанных);
			//Параметры.Свойство("Четность", Четность);
			//Параметры.Свойство("СтопБиты", СтопБиты);
			//Параметры.Свойство("УправлениеПотоком", УправлениеПотоком);
			//Параметры.Свойство("ШиринаСлипЧека", ШиринаСлипЧека);
			//Параметры.Свойство("КоличествоКопий", КоличествоКопий);
			//Параметры.Свойство("ТекстШапки", ТекстШапки);
			//Параметры.Свойство("ТекстПодвала", ТекстПодвала);
			//Параметры.Свойство("ДанныеМакетаСлипЧека", ДанныеМакетаСлипЧека);
			if(true/*Параметры.ИДТерминала  = Неопределено
	 Или Параметры.Порт         = Неопределено
	 Или Параметры.Скорость     = Неопределено	 
	 Или Параметры.БитыДанных   = Неопределено
	 Или Параметры.Четность     = Неопределено
	 Или Параметры.СтопБиты     = Неопределено
	 Или Параметры.УправлениеПотоком = Неопределено
	 Или Параметры.ШиринаСлипЧека    = Неопределено
	 Или Параметры.КоличествоКопий   = Неопределено
	 Или Параметры.ТекстШапки   = Неопределено
	 Или Параметры.ТекстПодвала   = Неопределено
	 Или Параметры.ДанныеМакетаСлипЧека = Неопределено*/)
			{
				//ВыходныеПараметры.Добавить(999);
				/*ВыходныеПараметры.Добавить(НСтр("ru='Не настроены параметры устройства.
		|Для корректной работы устройства необходимо задать параметры его работы.
		|Сделать это можно при помощи формы ""Настройка параметров"" модели
		|подключаемого оборудования в форме ""Подключение и настройка оборудования"".'"));*/
			}
			//Результат = ОбъектДрайвера.Подключить(Параметры);
			if(true/*Результат*/)
			{
				//ПараметрыПодключения.Вставить("КодОригинальнойТранзакции", Неопределено);
				//ПараметрыПодключения.Вставить("ТипТранзакции", "");
			}
			return null;
		}
		// Функция осуществляет отключение устройства.
		//
		// Параметры:
		//  ОбъектДрайвера - <*>
		//         - ОбъектДрайвера драйвера торгового оборудования.
		//
		// Возвращаемое значение:
		//  <Булево> - Результат работы функции.
		//

		public object ОтключитьУстройство(/*ОбъектДрайвера, Параметры, ПараметрыПодключения, ВыходныеПараметры*/)
		{
			//Результат = Истина;
			//ВыходныеПараметры = Новый Массив();
			return null;
		}
		// Функция получает, обрабатывает и перенаправляет на исполнение команду к драйверу
		//

		public object ВыполнитьКоманду(/*Команда, ВходныеПараметры = Неопределено, ВыходныеПараметры = Неопределено,
                         ОбъектДрайвера, Параметры, ПараметрыПодключения*/)
		{
			//Результат = Истина;
			//ВыходныеПараметры = Новый Массив();
			/*// Оплата платежной картой
*/
			if(true/*Команда = "AuthorizeSales"*/)
			{
				//Сумма      = ВходныеПараметры[0];
				//НомерКарты = ВходныеПараметры[1];
				/*Результат = ОплатитьПлатежнойКартой(ОбъектДрайвера, Параметры, ПараметрыПодключения,
		                                    Сумма, НомерКарты, ВыходныеПараметры);*/
				/*// Возрат платежа
*/
			}
			return null;
		}
		///////////////////////////////////////////////////////////////////////////////
		// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ
		// Функция осуществляет авторизацию (оплату) по карте.
		//

		public object ОплатитьПлатежнойКартой(/*ОбъектДрайвера, Параметры, ПараметрыПодключения,
                                Сумма, НомерКарты, ВыходныеПараметры*/)
		{
			//Результат = Истина;
			//СсылочныйНомер = "";
			//КодАвторизации = "";
			//ПараметрыПодключения.ТипТранзакции = НСтр("ru='Оплатить'");
			//УстановитьПараметрыДрайвера(ОбъектДрайвера, Параметры);
			//Ответ = ОбъектДрайвера.ОплатитьПлатежнойКартой(НомерКарты, Сумма, СсылочныйНомер, КодАвторизации);
			if(true/*Не Ответ*/)
			{
				//ПараметрыПодключения.ТипТранзакции = "Отказ";
				//ВыходныеПараметры.Добавить(999);
				//ВыходныеПараметры.Добавить("");
				//КодОшибки = ОбъектДрайвера.ПолучитьОшибку(ВыходныеПараметры[1]);
				//Результат = Ложь;
			}
			return null;
		}
		// Функция осуществляет возврат платежа по карте.
		//

		public object ВернутьПлатежПоПлатежнойКарте(/*ОбъектДрайвера, Параметры, ПараметрыПодключения,
                                      Сумма, НомерКарты, СсылочныйНомер, НомерЧека, ВыходныеПараметры*/)
		{
			//Результат = Истина;
			//ПараметрыПодключения.ТипТранзакции = НСтр("ru='Вернуть платеж'");
			//УстановитьПараметрыДрайвера(ОбъектДрайвера, Параметры);
			/*Ответ = ОбъектДрайвера.ВернутьПлатежПоПлатежнойКарте(НомерКарты,
	                                                     Сумма,
	                                                     СсылочныйНомер,
	                                                     НомерЧека);*/
			if(true/*Не Ответ*/)
			{
				//ПараметрыПодключения.ТипТранзакции = "Отказ";
				//ВыходныеПараметры.Добавить(999);
				//ВыходныеПараметры.Добавить("");
				//КодОперации = ОбъектДрайвера.ПолучитьОшибку(ВыходныеПараметры[1]);
				//Результат = Ложь;
			}
			return null;
		}
		// Функция осуществляет отмену платежа по карте.
		//

		public object ОтменитьПлатежПоПлатежнойКарте(/*ОбъектДрайвера, Параметры, ПараметрыПодключения,
                                      Сумма, СсылочныйНомер, НомерЧека, ВыходныеПараметры*/)
		{
			//Результат = Истина;
			//ПараметрыПодключения.ТипТранзакции = НСтр("ru='Отменить платеж'");
			//УстановитьПараметрыДрайвера(ОбъектДрайвера, Параметры);
			//Ответ = ОбъектДрайвера.ОтменитьПлатежПоПлатежнойКарте("", Сумма, СсылочныйНомер);
			if(true/*Не Ответ*/)
			{
				//ПараметрыПодключения.ТипТранзакции = "Отказ";
				//ВыходныеПараметры.Добавить(999);
				//ВыходныеПараметры.Добавить("");
				//КодОперации = ОбъектДрайвера.ПолучитьОшибку(ВыходныеПараметры[1]);
				//Результат = Ложь;
			}
			return null;
		}
		// Функция осуществляет аварийную отмену операции по карте.
		//

		public object АварийнаяОтменаОперации(/*ОбъектДрайвера, Параметры, ПараметрыПодключения,
                                Сумма, СсылочныйНомер, НомерЧека, ВыходныеПараметры*/)
		{
			//Результат = Истина;
			//УстановитьПараметрыДрайвера(ОбъектДрайвера, Параметры);
			//ОбъектДрайвера.НомерСсылки = ПараметрыПодключения.КодОригинальнойТранзакции;
			//Ответ = ОбъектДрайвера.АварийнаяОтменаОперации("", Сумма, СсылочныйНомер, НомерЧека);
			if(true/*Не Ответ*/)
			{
				//ВыходныеПараметры.Добавить(999);
				//ВыходныеПараметры.Добавить("");
				//КодОперации = ОбъектДрайвера.ПолучитьОшибку(ВыходныеПараметры[1]);
				//Результат = Ложь;
			}
			return null;
		}
		// Функция осуществляет сверку итогов по картам.
		//

		public object ИтогиДняПоКартам(/*ОбъектДрайвера, Параметры, ПараметрыПодключения, ВыходныеПараметры*/)
		{
			//Результат = Истина;
			//Ответ     = Неопределено;
			//ПараметрыПодключения.ТипТранзакции = НСтр("ru='Сверка итогов'");
			//УстановитьПараметрыДрайвера(ОбъектДрайвера, Параметры);
			//Ответ = ОбъектДрайвера.ИтогиДняПоКартам();
			if(true/*Не Ответ*/)
			{
				//ВыходныеПараметры.Добавить(999);
				//ВыходныеПараметры.Добавить("");
				//ОбъектДрайвера.ПолучитьОшибку(ВыходныеПараметры[1]);
				//Результат = Ложь;
			}
			return null;
		}
		// Функция осуществляет преавторизацию по карте.
		//

		public object ПреавторизоватьПоПлатежнойКарте(/*ОбъектДрайвера, Параметры, ПараметрыПодключения,
                                        Сумма, НомерКарты, ВыходныеПараметры*/)
		{
			//Результат = Истина;
			//СсылочныйНомер = Неопределено;
			//НомерЧека      = Неопределено;
			//ПараметрыПодключения.ТипТранзакции = НСтр("ru='Преавторизовать платеж'");
			//УстановитьПараметрыДрайвера(ОбъектДрайвера, Параметры);
			/*Ответ = ОбъектДрайвера.ПреавторизацияПоПлатежнойКарте(НомерКарты,
	                                                      Сумма,
	                                                      СсылочныйНомер,
	                                                      НомерЧека);*/
			if(true/*Не Ответ*/)
			{
				//ПараметрыПодключения.ТипТранзакции = "Отказ";
				//ВыходныеПараметры.Добавить(999);
				//ВыходныеПараметры.Добавить("");
				//КодОперации = ОбъектДрайвера.ПолучитьОшибку(ВыходныеПараметры[1]);
				//Результат = Ложь;
			}
			return null;
		}
		// Функция осуществляет завершение преавторизации по карте.
		//

		public object ЗавершитьПреавторизациюПоПлатежнойКарте(/*ОбъектДрайвера, Параметры, ПараметрыПодключения,
                                                Сумма, НомерКарты, СсылочныйНомер, НомерЧека, ВыходныеПараметры*/)
		{
			//Результат = Истина;
			//ПараметрыПодключения.ТипТранзакции = НСтр("ru='Завершить преавторизацию'");
			//УстановитьПараметрыДрайвера(ОбъектДрайвера, Параметры);
			/*Ответ = ОбъектДрайвера.ЗавершитьПреавторизациюПоПлатежнойКарте(НомерКарты,
	                                                                Сумма,
	                                                                СсылочныйНомер,
	                                                                НомерЧека);*/
			if(true/*Не Ответ*/)
			{
				//ПараметрыПодключения.ТипТранзакции = "Отказ";
				//ВыходныеПараметры.Добавить(999);
				//ВыходныеПараметры.Добавить("");
				//КодОперации = ОбъектДрайвера.ПолучитьОшибку(ВыходныеПараметры[1]);
				//Результат = Ложь;
			}
			return null;
		}
		// Функция осуществляет отмену преавторизации по карте.
		//

		public object ОтменитьПреавторизациюПоПлатежнойКарте(/*ОбъектДрайвера, Параметры, ПараметрыПодключения,
                                               Сумма, НомерКарты, СсылочныйНомер, НомерЧека, ВыходныеПараметры*/)
		{
			//Результат = Истина;
			//ПараметрыПодключения.ТипТранзакции = НСтр("ru='Отменить преавторизацию'");
			//УстановитьПараметрыДрайвера(ОбъектДрайвера, Параметры);
			/*Ответ = ОбъектДрайвера.ОтменитьПреавторизациюПоПлатежнойКарте(НомерКарты,
	                                                              Сумма,
	                                                              СсылочныйНомер);*/
			if(true/*Не Ответ*/)
			{
				//ПараметрыПодключения.ТипТранзакции = "Отказ";
				//ВыходныеПараметры.Добавить(999);
				//ВыходныеПараметры.Добавить("");
				//КодОперации = ОбъектДрайвера.ПолучитьОшибку(ВыходныеПараметры[1]);
				//Результат = Ложь;
			}
			return null;
		}
		// Функция осуществляет тестирование устройства.
		//

		public object ТестУстройства(/*ОбъектДрайвера, Параметры, ПараметрыПодключения, ВыходныеПараметры*/)
		{
			//Результат = Истина;
			//РезультатТеста = "";
			//УстановитьПараметрыДрайвера(ОбъектДрайвера, Параметры);
			//Результат = ОбъектДрайвера.ТестУстройства(РезультатТеста);
			//ВыходныеПараметры.Добавить(?(Результат, 0, 999));
			//ВыходныеПараметры.Добавить(РезультатТеста);
			return null;
		}
		// Функция возвращает версию установленного драйвера
		//

		public object ПолучитьВерсиюДрайвера(/*ОбъектДрайвера, Параметры, ПараметрыПодключения, ВыходныеПараметры*/)
		{
			//Результат = Истина;
			//ВыходныеПараметры.Добавить(НСтр("ru='Установлен'"));
			//ВыходныеПараметры.Добавить(НСтр("ru='Не определена'"));
			return null;
		}
		// Заполняет массив строками слип-чека для последующей печати на ФР
		//

		public object ПолучитьСтрокиСлипЧека(/*ОбъектДрайвера, Параметры, ПараметрыПодключения, СлипЧек, ВыходныеПараметры*/)
		{
			//Результат = Истина;
			//СлипЧек = ОбъектДрайвера.ТекстКвитанции;
			return null;
		}
		// Установить параметры драйвера
		//

		public void УстановитьПараметрыДрайвера(/*ОбъектДрайвера, Параметры*/)
		{
			/*// Параметры системы
*/
			//ОбъектДрайвера.ИДТерминала = Параметры.ИДТерминала;
			//ОбъектДрайвера.Порт = Параметры.Порт;
			//ОбъектДрайвера.Скорость = Параметры.Скорость;
			//ОбъектДрайвера.КодВалюты = Параметры.КодВалюты;
			//ОбъектДрайвера.КодСимволаОтреза = Параметры.КодСимволаОтреза;
			//ОбъектДрайвера.ТекстШапки = Параметры.ТекстШапки;
			//ОбъектДрайвера.ТекстПодвала = Параметры.ТекстПодвала;
		}
	}
}
